package cn.design;

import cn.design.realize.Caretaker;
import cn.design.realize.Originator;

/**
 * @author dlq
 * @description
 *     备忘录客户端调用类:
 * @date 2020/10/10 9:44
 * @since 1.0
 */
public class MementoClientDemo {
    public static void main(String[] args) {
        // 你打一个 剧情游戏，你担心你打不过boss,
        // 在打boss之前，你先保存下游戏进度，万一打不过，就不用了重头开始打

        //1. 当前游戏进入到打boss之前了
        // 将当前任务恢复到满状态
        Originator originator = new Originator();
        originator.setState("满血状态");
        originator.setBlood("100%血量");
        originator.setBlueAmount("100%蓝量");
        System.out.println("当前人物状态: " + originator.toString());

        //2. 保存当前人物的状态
        Caretaker caretaker = new Caretaker();
        //创建备忘录并且存储备忘录
        caretaker.setMemento(originator.createMemento());

        //3. 开始打boss，并且打不赢
        System.out.println("开始打 boss ......");
        originator.setState("残血状态");
        originator.setBlood("1%血量");
        originator.setBlueAmount("1%蓝量");
        System.out.println("操作失误，打不赢boss,人物此时的状态 ......"+originator.toString());

        //4 回滚到之前打boss的状态
        originator.restoreMemento(caretaker.getMemento());
        System.out.println("回滚后人物的状态...."+originator.toString());


    }
}
